Ext.namespace('pages.p2p.jkgl.marryHk');

pages.p2p.jkgl.marryHk.View = function(config) {
	Ext.apply(this, config);
	/** 操作类型 */
	this.operType = config.operType;
	this.record = config.record;
	this.initUIComponents();
	pages.p2p.jkgl.marryHk.View.superclass.constructor.call(this);
};
Ext.extend(pages.p2p.jkgl.marryHk.View, Ext.Window, {
	initUIComponents : function() {
		this.form = new Ext.form.FormPanel({
					region : 'north',
					layout : 'column',
					height : 110,
					labelWidth : 125,
					labelAlign : 'left',
					autoScroll : true,
					border : false,
					frame : false,
					bodyStyle : 'padding:5',
					items : [{
								columnWidth : 1,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '项目名称',
											xtype : 'textfield',
											name : 'XMMC',
											id : 'XMMC',
											readOnly : true,
											anchor : '99%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '项目ID',
											xtype : 'textfield',
											name : 'XM_ID',
											id : 'XM_ID',
											readOnly : true,
											anchor : '98%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '借款人用户名',
											xtype : 'textfield',
											name : 'JKR_USERNAME',
											id : 'JKR_USERNAME',
											readOnly : true,
											anchor : '98%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '总期数',
											xtype : 'textfield',
											name : 'ZQS',
											id : 'ZQS',
											readOnly : true,
											anchor : '98%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '应还款金额',
											xtype : 'textfield',
											name : 'YHKJE',
											id : 'YHKJE',
											readOnly : true,
											anchor : '98%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '已还款金额',
											xtype : 'textfield',
											name : 'HEDJE',
											id : 'HEDJE',
											readOnly : true,
											anchor : '98%'
										}]
							}, {
								columnWidth : .5,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '未还款金额',
											xtype : 'textfield',
											name : 'WHKJE',
											id : 'WHKJE',
											readOnly : true,
											anchor : '98%'
										}]
							}]
				});
		this.westStore = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : ExtJ
										.getActionPath('jkgl/listMarryYhk.do')
							}),
					remoteSort : true,
					reader : new Ext.data.JsonReader({
								root : 'data',
								totalProperty : 'total',
								id : 'ID'
							}, [{
										name : 'ID',
										mapping : 'ID'
									}, {
										name : 'SSQS',
										mapping : 'SSQS'
									}, {
										name : 'YHLX_DATE',
										mapping : 'YHLX_DATE'
									}, {
										name : 'YHBJ',
										mapping : 'YHBJ'
									}, {
										name : 'YHLX',
										mapping : 'YHLX'
									}, {
										name : 'YHK_HJ',
										mapping : 'YHK_HJ'
									}])
				});

		var westSm = new Ext.grid.CheckboxSelectionModel({
					singleSelect : true,
					listeners : {
						'rowselect' : function(sm, rowIndex, record) {
							var westCount = Ext.getCmp('westGrid').getStore()
									.getCount();
							if (rowIndex != 0) {// 选择的是否是第1条
								Ext.Msg.alert('提示', '请选择"应还款-未匹配明细"第一条记录');
								Ext.getCmp('westGrid').getSelectionModel()
										.clearSelections();
							} else {
								if (westCount == 1) {
									Ext.getCmp('eastGrid').getSelectionModel()
											.selectAll();
								} else {
									Ext.getCmp('eastGrid').getSelectionModel()
											.selectFirstRow();
								}
							}
						},
						'rowdeselect' : function(sm) {
							Ext.getCmp('eastGrid').getSelectionModel()
									.clearSelections();
						}
					}
				});

		var westCm = new Ext.grid.ColumnModel([westSm,
				new Ext.grid.RowNumberer(), {
					header : '期数',
					width : 35,
					sortable : true,
					dataIndex : 'SSQS'
				}, {
					header : '应还时间',
					width : 75,
					sortable : true,
					dataIndex : 'YHLX_DATE'

				}, {
					header : '应还款本金',
					width : 100,
					sortable : true,
					dataIndex : 'YHBJ'
				}, {
					header : '应还款利息',
					width : 100,
					sortable : true,
					dataIndex : 'YHLX'
				}, {
					header : '应还款合计',
					width : 100,
					sortable : true,
					dataIndex : 'YHK_HJ'
				}]);

		/**
		 * GridPanel
		 */
		this.westGrid = new Ext.grid.GridPanel({
					id : 'westGrid',
					region : 'west',
					width : 460,
					title : '应还款-未匹配明细',
					store : this.westStore,
					border : true,
					frame : false,
					viewConfig : {
						autoFill : false,
						forceFit : false,
						focusRow : function() {
							return;
						},
						getRowClass : function(record, rowIndex, rowParams,
								store) {
							if (record.get("TOP_LEVEL") == "1") {
								return 'ux-grid-record-onTop';
							}
						}
					},
					sm : westSm,
					cm : westCm
				});
		this.eastStore = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : ExtJ
										.getActionPath('jkgl/listMarryHedHk.do')
							}),
					remoteSort : true,
					reader : new Ext.data.JsonReader({
								root : 'data',
								totalProperty : 'total',
								id : 'ID'
							}, [{
										name : 'ID',
										mapping : 'ID'
									}, {
										name : 'YHK_JE',
										mapping : 'YHK_JE'
									}, {
										name : 'HK_DATE',
										mapping : 'HK_DATE'
									}, {
										name : 'HK_ZL',
										mapping : 'HK_ZL'
									}])
				});

		var eastSm = new Ext.grid.CheckboxSelectionModel({
					singleSelect : false,
					listeners : {
						'rowselect' : function(sm, rowIndex, record) {
							var isSelected = Ext.getCmp('westGrid')
									.getSelectionModel().isSelected(0);
							if (!isSelected) {
								Ext.Msg.alert('提示', '请选择"应还款-未匹配明细"第一条记录');
								Ext.getCmp('eastGrid').getSelectionModel()
										.clearSelections();
								return;
							}

							var westCount = Ext.getCmp('westGrid').getStore()
									.getCount();
							var eastCount = Ext.getCmp('eastGrid').getStore()
									.getCount();
							if (westCount > 1) {
								if (rowIndex != 0) {// 只能从第一条开始匹配
									Ext.Msg.alert('提示', '只能选择"已还款-未匹配明细"第一条记录');
									Ext.getCmp('eastGrid').getSelectionModel()
											.clearSelections();
								}
							} else if (westCount == 1
									&& (rowIndex + 1) == eastCount) {
								if ("02" == record.get("HK_ZL")) {
									//Ext.getCmp('grid_pp').close();
									Ext.getCmp('eastGrid').getSelectionModel().clearSelections();
									Ext.Msg.alert('提示','本金尚未还款,无法匹配最后一期,请偿还本金后再操作!');
								}
							}
						},
						'rowdeselect' : function(sm) {
							Ext.getCmp('westGrid').getSelectionModel()
									.clearSelections();
						}
					}
				});

		var eastCm = new Ext.grid.ColumnModel([eastSm,
				new Ext.grid.RowNumberer(), {
					header : '还款时间',
					width : 75,
					sortable : true,
					dataIndex : 'HK_DATE',
					renderer : function(v) {
						return new Date(v).format('Y-m-d');
					}
				}, {
					header : '已还款金额',
					width : 80,
					sortable : true,
					dataIndex : 'YHK_JE'
				}, {
					header : '还款类型',
					width : 60,
					sortable : true,
					dataIndex : 'HK_ZL',
					renderer : function(v) {
						if ("01" == v) {
							return "本金";
						} else if ("02" == v) {
							return "利息";
						}
					}
				}]);
		this.eastGrid = new Ext.grid.GridPanel({
					id : 'eastGrid',
					region : 'center',
					title : '已还款-未匹配明细',
					store : this.eastStore,
					border : true,
					frame : false,
					viewConfig : {
						autoFill : false,
						forceFit : false,
						focusRow : function() {
							return;
						},
						getRowClass : function(record, rowIndex, rowParams,
								store) {
							if (record.get("TOP_LEVEL") == "1") {
								return 'ux-grid-record-onTop';
							}
						}
					},
					sm : eastSm,
					cm : eastCm
				});
		Ext.apply(this, {
					title : '还款信息匹配',
					border : false,
					layout : 'border',
					id : 'grid_pp',
					enableTabScroll : true,
					style : {
						marginRight : 'auto',
						marginLeft : 'auto'
					},
					width : 740,
					height : 500,
					modal : true,
					items : [this.form, this.westGrid, this.eastGrid],
					listeners : {
						'render' : this.initData.createDelegate(this)
					},
					tbar : [{
								text : '匹配记录',
								iconCls : 'save',
								handler : function() {
									this.onAdd();
								}.createDelegate(this)
							}, '-', {
								text : '关闭',
								iconCls : 'close',
								handler : function() {
									this.close();
								}.createDelegate(this)
							}]
				});
	},
	initData : function() {
		this.onQuery();
	},
	onQuery : function() {
		// 应还款明细
		this.westStore.baseParams.xmid = this.record.get("REF_XM_ID");
		this.westStore.baseParams.username = this.record
				.get("REF_JKR_USERNAME");
		Ext.getBody().mask("正在查询,请稍候...");
		this.westStore.reload({
					params : {
						start : 0,
						limit : pageSize
					},
					callback : function() {
						Ext.getBody().unmask(true);
					}
				});
		// 已还款明细
		this.eastStore.baseParams.xmid = this.record.get("REF_XM_ID");
		this.eastStore.baseParams.username = this.record
				.get("REF_JKR_USERNAME");
		Ext.getBody().mask("正在查询,请稍候...");
		this.eastStore.reload({
					params : {
						start : 0,
						limit : pageSize
					},
					callback : function() {
						Ext.getBody().unmask(true);
					}
				});
		// 项目还款信息
		Ext.getCmp('XMMC').setValue(this.record.get('REF_XM_NAME'));
		Ext.getCmp('XM_ID').setValue(this.record.get('REF_XM_ID'));
		Ext.getCmp('JKR_USERNAME')
				.setValue(this.record.get('REF_JKR_USERNAME'));
		Ext.getCmp('ZQS').setValue(this.record.get('QX_MONTH'));
		var yhkje = this.record.get('YHKJE');
		var hedje = this.record.get('HED_JE');
		Ext.getCmp('YHKJE').setValue(yhkje);
		Ext.getCmp('HEDJE').setValue(hedje);
		Ext.getCmp('WHKJE')
				.setValue((Number(yhkje) - Number(hedje)).toFixed(2));
	},
	onAdd : function() {
		var yhkRecord = this.westGrid.getSelectionModel().getSelected();
		if (!yhkRecord) {
			ExtJ.showMessage("请选择'应还款-未匹配明细'!");
			return;
		}
		var hedhkRecords = this.eastGrid.getSelectionModel().getSelections();
		if (hedhkRecords.length == 0) {
			ExtJ.showMessage("请选择'已还款-未匹配明细'!");
			return;
		}
		var id = yhkRecord.get("ID");
		var hkId = new Array();
		for (var i = 0; i < hedhkRecords.length; i++) {
			hkId.push(hedhkRecords[i].get("ID"));
		}
		Ext.Ajax.request({
					url : ExtJ.getActionPath('jkgl/saveMarryHk.do'),
					params : {
						id : id,
						hkId : hkId.join(',')
					},
					success : function(response, options) {
						var text = Ext.decode(response.responseText);
						Ext.Msg.alert('提示', text.msg);
						if ('1' == text.res) {
							Ext.getCmp('westGrid').getStore().reload();
							Ext.getCmp('eastGrid').getStore().reload();
						}
					},
					failure : function() {
						Ext.Msg.alert('提示', '网络异常,请重试!');
					}
				});

	}

});